맨위로가기

알파 채널

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

알파 채널은 앨비 레이 스미스가 1970년대 말에 처음 제안하고, 1984년 토머스 포터와 톰 더프가 논문을 통해 개발한 기술이다. 이는 이미지의 각 픽셀에 투명도 정보를 추가하여 이미지 합성을 가능하게 한다. 알파 채널은 일반적으로 0(투명)과 1(불투명) 사이의 값을 가지며, 소스 이미지를 대상 이미지에 그릴 때 사용되는 다양한 연산 방식을 정의한다. 곱셈된 알파는 계산 속도를 높이기 위해 RGB 값에 알파 값을 미리 곱하는 방식이며, 윈도우 GDI, OpenGL, Direct3D 등에서 활용된다.

더 읽어볼만한 페이지

  • 컴퓨터 그래픽스 알고리즘 - 알파 합성
    알파 합성은 이미지의 투명도를 표현하고 합성하는 기술로, 알파 채널을 사용하여 투명도 정보를 저장하고 스트레이트 알파와 프리멀티플라이드 알파 방식으로 이미지를 합성하며, PNG, TIFF, GIF 등 다양한 이미지 형식이 이를 지원한다.
  • 컴퓨터 그래픽스 알고리즘 - 클리어타입
    클리어타입은 마이크로소프트에서 개발한 서브픽셀 렌더링 기술로, LCD와 같은 평판 모니터에서 텍스트 가독성을 향상시키기 위해 픽셀을 구성하는 서브픽셀을 개별적으로 제어하여 글꼴의 앤티에일리어싱 효과를 개선하고 텍스트를 더 부드럽게 보이도록 하는 기술이다.
알파 채널
알파 채널 소개
정의이미지의 각 픽셀에 투명도 정보를 추가하는 채널
역할이미지 편집, 합성을 용이하게 함
활용이미지 합성
특수 효과
비디오 게임
웹 디자인
기술적 세부 사항
표현 방식추가적인 8비트 채널 (256단계의 투명도 표현)
값의 의미0은 완전 투명, 255는 완전 불투명
적용 분야래스터 그래픽
대안 기술키잉 (블루 스크린, 그린 스크린)
소프트웨어 지원
예시어도비 포토샵
김프
페인트샵 프로
파일 포맷 지원
지원 포맷PNG
TIFF
TGA
GIF
PSD
색 공간 관련 정보
RGB빨강, 초록, 파랑 채널에 투명도 정보를 더함
CMYK시안, 마젠타, 노랑, 검정 채널에 투명도 정보를 더함

2. 역사

앨비 레이 스미스가 1970년대 말 알파 채널 개념을 처음 선보였고, 1984년에 토머스 포터와 톰 더프가 논문을 통해 완전히 개발하였다.[9]

3. 기술적 원리

컴퓨터에서 프린터나 디스플레이 등 대부분의 표시 장치는 RGB(빨강, 초록, 파랑), CMYK(청록, 자홍, 노랑, 검정) 등 단색의 조합(가산 혼합 또는 감산 혼합)으로 색을 표현한다. 각 단색의 밝기 또는 농도를 조절함으로써 인간이 인지하는 많은 색을 표현할 수 있다. 컴퓨터 내부의 데이터에서도 유사한 형식을 사용한다.

일부 래스터 이미지 데이터 형식이나 이미지 편집 소프트웨어에서는 이러한 표시되는 각 단색 성분 정보(컬러 채널) 외에, 직접 표시되지 않는 보조 데이터를 추가할 수 있는데, 이를 알파 채널이라고 부른다. 알파 채널은 이미지의 마스크나 여러 이미지의 합성 등에 사용된다. 채널당 비트 수(계조 수)는 형식에 따라 다르지만, 8비트(256계조)나 16비트(65,536계조)가 많이 사용된다.[1] 인덱스 컬러 이미지의 경우, 컬러 팔레트 중 어떤 색이 투명색으로 사용될 수 있지만, 해당 픽셀을 투명하게 할지 여부의 이진 정보밖에 없기 때문에 픽셀 가장자리에 재기(jaggy, 들쭉날쭉한 모양)가 발생하기 쉽다. 반면, 8비트나 16비트 알파 채널을 사용하면 데이터량이 늘어나지만 부드러운 반투명 합성이 가능하다(안티앨리어싱). 어도비 포토샵처럼 알파 채널을 단독의 그레이 스케일 이미지로 표시·편집하거나, 하나의 이미지에 여러 개의 알파 채널을 갖게 할 수 있는 소프트웨어도 있다.

알파 채널은 영상 편집 기술에서의 크로마키에 해당하는 키 신호이다.

3. 1. 알파 채널 계산식

일반적으로 알파 채널 계산은 1984년 토머스 포터와 톰 더프의 논문에 기반한다.[2]

A 및 RGB의 정의역은 [0, 1]로 한다. A = 0은 투명하고, A = 1은 불투명하다. 또한, 투명한 이미지는 다음과 같이 취급한다.

:\mathit{A}=0 \Rightarrow \mathit{RGB}=0

src (source)를 dst (destination)로, 알파 채널이 있는 이미지를 그리는 계산식은 다음과 같다. \mathit{src}_\text{F}\mathit{dst}_\text{F}의 정의는 후술한다.

:

\left\{

\begin{array}{l}

\mathit{out}_\mathit{A} = \mathit{src}_\mathit{A} \mathit{src}_\text{F} + \mathit{dst}_\mathit{A} \mathit{dst}_\text{F} \\

\mathit{out}_\mathit{RGB} = (\mathit{src}_\mathit{RGB} \mathit{src}_\mathit{A} \mathit{src}_\text{F} + \mathit{dst}_\mathit{RGB} \mathit{dst}_\mathit{A} \mathit{dst}_\text{F}) / \mathit{out}_\mathit{A}

\end{array}

\right.



이때, A를 RGB에 미리 곱해두면 다음과 같이 식이 간단해진다.

:

\left\{

\begin{array}{l}

\mathit{out}_\text{amp} = \mathit{out}_\mathit{RGB} \times \mathit{out}_\mathit{A} \\

\mathit{src}_\text{amp} = \mathit{src}_\mathit{RGB} \times \mathit{src}_\mathit{A} \\

\mathit{dst}_\text{amp} = \mathit{dst}_\mathit{RGB} \times \mathit{dst}_\mathit{A}

\end{array}

\right.



:

\left\{

\begin{array}{l}

\mathit{out}_\mathit{A} = \mathit{src}_\mathit{A} \mathit{src}_\text{F} + \mathit{dst}_\mathit{A} \mathit{dst}_\text{F} \\

\mathit{out}_\text{amp} = \mathit{src}_\text{amp} \mathit{src}_\text{F} + \mathit{dst}_\text{amp} \mathit{dst}_\text{F}

\end{array}

\right.



곱셈-덧셈 연산만으로 계산할 수 있게 되므로, 이 곱셈된 알파 (premultiplied alpha) 형식으로 다루면 고속으로 처리할 수 있다.[3] 예를 들어 Microsoft Windows의 GDI에 의한 알파 블렌딩에서는, 곱셈된 알파를 상정한 계산식이 사용되고 있다.[4] 단점은, 각 색을 8비트로 유지하는 경우, A가 1보다 작으면 RGB의 정확한 값을 유지할 수 없다는 것이다.

\mathit{src}_\text{F}\mathit{dst}_\text{F}는 SRC over DST와 같이 표기하고, 연산자는 비가환이며 교환 법칙은 성립하지 않는다. 정의는 다음과 같다.

연산\mathit{src}_\text{F}\mathit{dst}_\text{F}
clear00
source10
destination01
over11 - \mathit{src}_\mathit{A}
in\mathit{dst}_\mathit{A}0
out1 - \mathit{dst}_\mathit{A}0
atop\mathit{dst}_\mathit{A}1 - \mathit{src}_\mathit{A}
xor1 - \mathit{dst}_\mathit{A}1 - \mathit{src}_\mathit{A}
plus11



계산 결과로 ARGB가 1을 초과한 경우에는 1로 한다.

논문에서는, 특히 유용한 것은 over, in, out, plus로 하고 있다. 또한, over를 특히 알파 블렌딩이라고 부른다. over는 곱셈 합성, plus는 덧셈 합성[5]이라고도 불린다. Windows GDI의 블렌딩에서는 over 연산만 지원된다. OpenGLDirect3D에서는 블렌딩의 연산을 선택할 수 있지만, \mathit{out}_\mathit{A}에 의한 나눗셈은 이루어지지 않고, 간략화된 계산식이 사용된다.[6][7][8]

\mathit{dst}_\mathit{A} = 0의 투명한 이미지에, over, out, xor, plus, source로 그리면, src의 내용이 그대로 복사된다.

3. 2. 곱셈된 알파 (Premultiplied Alpha)

알파 채널 계산 속도를 높이기 위해 알파(A) 값을 RGB 값에 미리 곱하는 방식이다.

:

\left\{

\begin{array}{l}

\mathit{out}_\text{amp} = \mathit{out}_\mathit{RGB} \times \mathit{out}_\mathit{A} \\

\mathit{src}_\text{amp} = \mathit{src}_\mathit{RGB} \times \mathit{src}_\mathit{A} \\

\mathit{dst}_\text{amp} = \mathit{dst}_\mathit{RGB} \times \mathit{dst}_\mathit{A}

\end{array}

\right.



위와 같이 미리 A를 RGB에 곱해두면, 아래와 같이 식이 간단해진다.

:

\left\{

\begin{array}{l}

\mathit{out}_\mathit{A} = \mathit{src}_\mathit{A} \mathit{src}_\text{F} + \mathit{dst}_\mathit{A} \mathit{dst}_\text{F} \\

\mathit{out}_\text{amp} = \mathit{src}_\text{amp} \mathit{src}_\text{F} + \mathit{dst}_\text{amp} \mathit{dst}_\text{F}

\end{array}

\right.



이렇게 하면 곱셈-덧셈 연산만으로 계산할 수 있어 고속 처리가 가능하다.[3] 예를 들어 Microsoft Windows의 GDI에서는 곱셈된 알파를 사용한 계산식이 적용된다.[4]

하지만 이 방식은 각 색을 8비트로 유지할 때, A가 1보다 작으면 RGB의 정확한 값을 유지할 수 없다는 단점이 있다.

\mathit{src}_\text{F}\mathit{dst}_\text{F}의 정의는 다음과 같다. (SRC over DST와 같이 표기하며, 연산자는 비가환이며 교환 법칙은 성립하지 않는다.)

연산에 따른 \mathit{src}_\text{F}\mathit{dst}_\text{F}
연산\mathit{src}_\text{F}\mathit{dst}_\text{F}
clear00
source10
destination01
over11 - \mathit{src}_\mathit{A}
in\mathit{dst}_\mathit{A}0
out1 - \mathit{dst}_\mathit{A}0
atop\mathit{dst}_\mathit{A}1 - \mathit{src}_\mathit{A}
xor1 - \mathit{dst}_\mathit{A}1 - \mathit{src}_\mathit{A}
plus11



계산 결과 ARGB 값이 1을 넘으면 1로 처리한다.

논문에서는 over, in, out, plus 연산이 특히 유용하다고 언급한다. over 연산은 알파 블렌딩 또는 곱셈 합성, plus 연산은 덧셈 합성[5]이라고도 한다. Windows GDI는 over 연산만 지원한다. OpenGLDirect3D는 다양한 블렌딩 연산을 선택할 수 있지만, \mathit{out}_\mathit{A}로 나누는 과정은 생략하고 간략화된 계산식을 사용한다.[6][7][8]

\mathit{dst}_\mathit{A} = 0인 투명한 이미지에 over, out, xor, plus, source 연산으로 그림을 그리면 src의 내용이 그대로 복사된다.

4. 활용

일부 래스터 이미지 데이터 형식이나 이미지 편집 소프트웨어에서는 표시되는 각 단색 성분 정보(컬러 채널) 외에, 직접 표시되지 않는 보조 데이터를 추가할 수 있는데, 이를 알파 채널이라고 한다. 알파 채널은 이미지의 마스크나 여러 이미지의 합성 등에 사용된다.[1]

알파 채널은 주로 다음과 같은 용도로 활용된다.


  • 이미지 합성: 여러 이미지를 자연스럽게 합성하는 데 사용된다.
  • 마스크: 이미지의 특정 영역을 가리거나 투명하게 만드는 데 사용된다.
  • 안티앨리어싱: 인덱스 컬러 이미지와 달리 픽셀 가장자리의 계단 현상(재기, jaggy)을 줄이고 부드럽게 표현할 수 있다.
  • 영상 편집: 크로마키와 같은 특수 효과에 사용되는 키 신호가 알파 채널에 해당한다.
  • 소프트웨어: 어도비 포토샵과 같은 이미지 편집 소프트웨어에서 알파 채널을 지원하며, 단독의 그레이 스케일 이미지로 표시·편집하거나, 하나의 이미지에 여러 개의 알파 채널을 갖게 할 수 있다.[1]


채널당 비트 수(계조 수)는 형식에 따라 다르지만, 8비트(256계조)나 16비트(65,536계조)가 많이 사용된다.[1]

참조

[1] 웹사이트 Photoshop チャンネルの基本 https://helpx.adobe.[...]
[2] PDF Compositing Digital Images - Thomas Porter and Tom Duff - Computer Graphics Project Lucasfilm Ltd. http://keithp.com/~k[...]
[3] 문서
[4] 웹사이트 BLENDFUNCTION (wingdi.h) - Win32 apps | Microsoft Docs https://docs.microso[...]
[5] 문서
[6] 웹사이트 glBlendFunc - OpenGL 4 Reference Pages https://www.khronos.[...]
[7] 웹사이트 D3DBLEND enumeration (D3D9Types.h) - Win32 apps | Microsoft Docs https://docs.microso[...]
[8] 웹사이트 D3DTEXTUREOP enumeration (D3D9Types.h) - Win32 apps | Microsoft Docs https://docs.microso[...]
[9] 저널 Compositing Digital Images



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com